$package('itsm.common.utility');

/**  
 * @fileOverview 有关Tab操作包
 * @author yctan
 * @version 1.0  
 */  
 /**  
 * @author yctan  
 * @constructor 有关Tab操作包
 * @description 有关Tab操作的所有函数
 * @date 2011-04-16
 * @since version 1.0 
 */  
itsm.common.utility.tabUtility=function(){
	
	
	return {
		
		/**
		 * @description如果当前TAB存在，则关闭TAB再打开新的TAB,与refreshTab一样，只是参数顺序不一样
		 */
		reOpenTab:function(url,title){
			if ($('#itsmMainTab').tabs('exists',title))
			{
				$('#itsmMainTab').tabs('close',title);
				$('#itsmMainTab').tabs('add',{
					title:title,
					cache:"true",
		 			href:url+'&random='+new Date().getTime(),
					closable:true
				});
			} 
			else 
			{
				$('#itsmMainTab').tabs('add',{
					title:title,
					cache:"true",
		 			href:url+'&random='+new Date().getTime(),
					closable:true
				});
			}
			itsm.common.utility.tabUtility.tabClose();
		},
		/**
		 * @description如果当前TAB存在，则关闭TAB再打开新的TAB,与reOpenTab一样，只是参数顺序不一样(推荐使用)
		 */
		refreshTab:function(title,url){
			
			if ($('#itsmMainTab').tabs('exists',title)){
				
				$('#itsmMainTab').tabs('close',title);
			} 
			
			$('#itsmMainTab').tabs('add',{
				title:title,
				cache:"false",
				href:url,
				closable:true
			});
			itsm.common.utility.tabUtility.tabClose();
		},
		/**
		  * @description 如果tabs存在则转到对应的TAB，如果不存在则添加tabs
		  * */
		addTab:function(title, url){
			
			if ($('#itsmMainTab').tabs('exists', title)){
				$('#itsmMainTab').tabs('select', title);
			} else {
				$('#itsmMainTab').tabs('add',{
					title:title,
					cache:"true",
					href:url,
					closable:true
				});
			}
			itsm.common.utility.tabUtility.tabClose();
		},
		/**
		 * 关闭选项卡.
		 * @param title
		 **/
		closeTab:function(title){
			if ($('#itsmMainTab').tabs('exists',title)){
				$('#itsmMainTab').tabs('close',title);
			}
		},
		/**
		 * 
		 * @param title
		 * @param method
		 **/
		selectTab:function(title,method){
			
			if ($('#itsmMainTab').tabs('exists',title)){
				
				$('#itsmMainTab').tabs('select',title);
				
				if(method!=null){
					method();
				}
			} 
		},
		/**
		 * 改变窗口大小时，刷新Tab
		 **/
		refreshWindow:function(){
			var obj=$('#itsmMainTab').tabs('getSelected').panel();
			$('.easyui-window').window('close');
//			listDoms(obj);
//			if(/*@cc_on!@*/!1) CollectGarbage();
			$('#itsmMainTab').tabs('getSelected').panel('refresh');
			
		},

//		function listDoms(c) {
//			var elms = $(c).find("*");
//			for (i=elms.length-1; i>=0; i--) {
//				$(elms[i]).unbind();
//				delete elms[i]
//				//elms[i] = null;
//			}
//		}
		/**
		 * 打开Tab，存在则选择
		 * @param title
		 * @param url
		 **/
		openTabCallback:function(title,url,callBack){
			
			if ($('#itsmMainTab').tabs('exists',title)){
				
				$('#itsmMainTab').tabs('select',title);
				
				callBack();

			}else {
				
				$('#itsmMainTab').tabs('add',{
					title:title,
					cache:"false",
		 			href:url,
					closable:true
				});
			}

		},
		/**
		 * @description 关闭事件绑定
		 * */
		tabCloseEven:function()
		{
		    //关闭当前
		    $('#mm-tabclose').click(function(){
		        var currtab_title = $('#mm').data("currtab");
		        $('#itsmMainTab').tabs('close',currtab_title);
		    })
		    //全部关闭
		    $('#mm-tabcloseall').click(function(){
		        $('.tabs-inner span').each(function(i,n){
		            var t = $(n).text();
		            $('#itsmMainTab').tabs('close',t);
		        });   
		    });
		    //关闭除当前之外的TAB
		    $('#mm-tabcloseother').click(function(){
		        var currtab_title = $('#mm').data("currtab");
		        $('.tabs-inner span').each(function(i,n){
		            var t = $(n).text();
		            if(t!=currtab_title)
		                $('#itsmMainTab').tabs('close',t);
		        });   
		    });
		    //关闭当前右侧的TAB
		    $('#mm-tabcloseright').click(function(){
		        var nextall = $('.tabs-selected').nextAll();
		        if(nextall.length==0){
		            //msgShow('系统提示','后边没有啦~~','error');
//		            alert('后边没有啦~~');
		            return false;
		        }
		        nextall.each(function(i,n){
		            var t=$('a:eq(0) span',$(n)).text();
		            $('#itsmMainTab').tabs('close',t);
		        });
				  return false;
		    });
		    //关闭当前左侧的TAB
		    $('#mm-tabcloseleft').click(function(){
		        var prevall = $('.tabs-selected').prevAll();
		        if(prevall.length==0){
//		            alert('到头了，前边没有啦~~');
		            return false;
		        }
		        prevall.each(function(i,n){
		            var t=$('a:eq(0) span',$(n)).text();
		            $('#itsmMainTab').tabs('close',t);
		        });
		        return false;
		    });
		    
		},
		listDoms: function(c) {
			var elms = $(c).find("*");
			for (i=elms.length-1; i>=0; i--) {
				$(elms[i]).unbind();	
				$(elms[i]).empty();
				$(elms[i]).remove();
				//elms[i] = null;
				delete elms[i]; 
				if(/*@cc_on!@*/!1) setTimeout(CollectGarbage, 1);
			}
			elms = $(c).find("*");
		},
		
		// Build popup menu HTML,创建右键菜单
		createMenu:function(menuData,e) {
		    var menu = $('<ul class=contextMenuPlugin><div class=gutterLine></div></ul>')
		      .appendTo(document.body);
//		    if (menuData.title) {
//		      $('<li class=header></li>').text(menuData.title).appendTo(menu);
//		    }
		    $.each(menuData.items,function(id,item){
		    	if (item) {
		    		//var row = $('<li><a href="#"><img><span></span></a></li>').appendTo(menu);
		            var row = $('<li><a href="#"><span></span></a></li>').appendTo(menu);
		            //row.find('img').attr('src', item.icon);
		            row.find('span').text(item.label);
		            if (item.action) {
		              row.find('a').click(item.action);
		            }
		          } else {
		            $('<li class=divider></li>').appendTo(menu);
		          }
		    });
		    //menu.find('.header').text(menuData.title);
		    menu.show()
		      .css({zIndex:1000001, left:e.pageX + 5 /* nudge to the right, so the pointer is covering the title */, top:e.pageY});
		    
		    var bg = $('<div></div>')
		      .css({left:0, top:0, width:'100%', height:'100%', position:'absolute', zIndex:1000000})
		      .appendTo(document.body)
		      .bind('contextmenu click', function() {
		        // If click or right click anywhere else on page: remove clean up.
		        bg.remove();
		        menu.remove();
		        //return false;
		      });
		    
		    menu.find('a').click(function() {
		        $('.contextMenuPlugin,.divider').remove();
		        bg.remove();
		        menu.remove();
		      });
		    
		  },
		openMenu:function(e){
			itsm.common.utility.tabUtility.createMenu({//创建关闭菜单
		          title:'',
		          items: [
					{label:i18n['refresh'],icon:'',action:function(){
						var currtab_title = $('#mm').data("currtab");
						itsm.common.utility.tabUtility.refreshWindow();
					}},
		            {label:i18n['task_label_close'],icon:'',action:function(){
		            	var currtab_title = $('#mm').data("currtab");
				        $('#itsmMainTab').tabs('close',currtab_title);
		            }},
		            {label:i18n['lable_closeAll'],icon:'',action:function(){
		            	$('.tabs-inner span').each(function(i,n){
				            var t = $(n).text();
				            //我的首页、我的面板、日程表
				            if(t!=i18n['title_my_home'] && t!=i18n['label_dashboard_my_panel'] && t!=i18n['title_calendar'] && t!=i18n['label_quick_launch'])
				            	$('#itsmMainTab').tabs('close',t);
				        });  
		            }},
		            {label:i18n['lable_onlyCloseAll'],icon:'',action:function(){
		            	var currtab_title = $('#mm').data("currtab");
				        $('.tabs-inner span').each(function(i,n){
				            var t = $(n).text();
				            if(t!=currtab_title)
				                $('#itsmMainTab').tabs('close',t);
				        }); 
		            }},
		            {label:i18n['lable_currentWebRightAllClose'],icon:'',action:function(){
		            	var nextall = $('.tabs-selected').nextAll();
				        if(nextall.length==0){
				            return false;
				        }
				        nextall.each(function(i,n){
				            var t=$('a:eq(0) span',$(n)).text();
				            //我的首页、我的面板、日程表
				            if(t!=i18n['title_my_home'] && t!=i18n['label_dashboard_my_panel'] && t!=i18n['title_calendar']  && t!=i18n['label_quick_launch'])
				            	$('#itsmMainTab').tabs('close',t);
				        });
						return false;
		            }},
		            {label:i18n['lable_currentWebLeftAllClose'],icon:'',action:function(){
		            	var prevall = $('.tabs-selected').prevAll();
				        if(prevall.length==0){
				            return false;
				        }
				        prevall.each(function(i,n){
				            var t=$('a:eq(0) span',$(n)).text();
				            //我的首页、我的面板、日程表
				            if(t!=i18n['title_my_home'] && t!=i18n['label_dashboard_my_panel'] && t!=i18n['title_calendar']  && t!=i18n['label_quick_launch'])
				            	$('#itsmMainTab').tabs('close',t);
				        });
				        return false;
		            }}
		          ]
		    },e);
		},
		/**
		 * @description 绑定右键菜单事件 
		 * */
		tabClose:function()
		{
			/*双击关闭TAB选项卡*/
			$(".tabs-inner").dblclick(function(){
//				var obj=$('#itsmMainTab').tabs('getSelected').panel();
//				itsm.common.utility.tabUtility.listDoms(obj);
				var subtitle = $(this).children("span").text();
				//我的首页、我的面板、日程表
				if(subtitle!=i18n['title_my_home'] && subtitle!=i18n['label_dashboard_my_panel'] && subtitle!=i18n['title_calendar']  && subtitle!=i18n['label_quick_launch'])
					$('#itsmMainTab').tabs('close',subtitle);
			})

			$(".tabs-inner").bind('contextmenu',function(e){
				
				$('#mm').menu('show',{
					left: e.pageX,
					top: e.pageY
				});
				var subtitle =$(this).children("span").text();
				//我的首页、我的面板、日程表
				if(subtitle!=i18n['title_my_home'] && subtitle!=i18n['label_dashboard_my_panel'] && subtitle!=i18n['title_calendar']  && subtitle!=i18n['label_quick_launch'])
					itsm.common.utility.tabUtility.openMenu(e);
				
				
				$('#mm').data("currtab",subtitle);
				$('#itsmMainTab').tabs('select',subtitle);
				
				return false;
			});
			

		},
		init:function(){
		}
	};
}();
